home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
language
/
sozo2
/
scdoc20.lzh
/
REL20.DOC
< prev
next >
Wrap
Text File
|
1991-05-19
|
4KB
|
91 lines
Sozobon C Compiler, release 2.0
The new 'cc' command has revised and added options. This list of
options replaces the one in the old documentation. Note that all
options now have upper-case synonyms so that the compiler can be
used with shells and TOS versions that convert all parameters to
upper case.
-c (or -C) : just generate object files
-O (or -z or -Z) : run the optimizer
-S (or -a or -A) : dont assemble, just run the compiler
-Ipath : path for include files
-Dname : define 'name'
-Dname=value : define 'name' to be 'value'
-Uname : undefine (builtin) 'name'
-o file (or -a or -A) : put the executable in 'file'
-f file (or -F) : read a list of file names from 'file'
-m mapfile (or -M) : generate a map file
-v (or -V) : print what is being done (verbose)
-n (or -N) : print what you would do, but do nothing
-p (or -P) : generate profiling calls
-Tdir (or -k or -K) : put temporary files in 'dir'
-t (or -h or -H) : dont remove compiler temporary files
-g (or -G) : compiler for debugging
-r (or -q or -Q) : include the floating library libm.a
-lxxx (or -j or -J) : include the library name "libxxx.a"
-s (or -y or -Y) : dont generate a symbol table for debugger
In particular note the following changes:
The flag for floating point used to be '-f' ... it is now '-r'
Symbol tables will be generated by default now, use '-s' to
not generate one (the old default was to NOT generate
a symbol table unless you used the 't' option)
Use the '-g' option if you plan to use the debugger 'szadb'
and you are using the optimizer
Release 2.0 of the compiler, contains two main new features in addition
to various bug fixes and performance enhancements. Consult sozobon.doc
and rel12.doc for a discussion of previous features.
1) Long external names
The old Alcyon object file format provided for only 8 characters in
external names. Since the compiler prefixes names with a '_' char,
you were effectively limited to 7 characters. Since more and more
C source code uses longer names, we have extended the Alcyon format
to allow names of any length. The assembler, link-loader, and
debugger understand the new format. Other tools have also been updated.
Old libraries can still be used with the compiler since the loader
has been designed to recognise both old and new format object files.
2) Cross tools under UNIX
Sources have been modified to allow use of the compiler, assembler,
linker, etc (but not 'make' or 'szadb' obviously) under UNIX systems.
Even systems with Intel byte-order and strict alignment requirements
can be used. Makefiles for unix are called 'make.unx'. You should
set the BYTEORDER macro appropriately. Also grep the source for
references to '/home/hans' and change them as needed.
The support of UNIX is experimental and we do NOT guarantee that you
will have no trouble at all. However, it has been tested somewhat
on Sun, Intel 386 and Intel 860 systems. Good luck.
3) Details of the new symbol table format
An extended symbol table begins with a symbol which has a special
name, flags and value:
name: 'SozobonX'
flags: 0x42 (absolute text)
value: 0x87654321
After this are the usual symbols except that symbols with 9 or more
characters in length have special name extension symbols after them.
Each name extension symbol adds up to 8 characters to the length of
the name. It is recognized because of the special flags and value:
flags: 0x42 (absolute text)
value: 0x87654321
Note that no normal symbol would have this combination of flags and value
since all text symbols have an EVEN value.
If you tried to use the old 'nm' with a new object file, you would see
what it thinks are a lot of these funny symbols. Thus old tools MAY
work with the new object and binary files.